<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

    </style>
</head>
<body>
<div id="app">
    <div class="box">
        <div class="input-wrap">
            <textarea v-model="obj.words"></textarea>
        </div>
        <div class="output-wrap">
            <div class="transbox">{{ result }}</div>
        </div>
    </div>
</div>
<script src="vue.js"></script>
<script src="axios.min.js"></script>
<script>
    /**
     * watch简单写法：
     * watch: {
     *   // 该方法会在数据变化时，触发执行
     *   数据属性名 (newValue, oldValue) {
     *     一些业务逻辑 或 异步操作。
     *   },
     *   '对象.属性名' (newValue, oldValue) {
     *     一些业务逻辑 或 异步操作。
     *   }
     * }
     * 完整写法
     * watch: {// watch 完整写法
     * 对象: {
     *     deep: true, // 深度监视
     *     immdiate:true,//立即执行handler函数
     *     handler (newValue) {
     *        console.log(newValue)
     *     }
     *   }
     * }
     *
     * 防抖: 延迟一会，一段时间内没有再次触发，再执行
     * 方法采用 clearTimeout
     */
    const app = new Vue({
        el: '#app',
        data: {
            obj: {
                words: ''
            },
            result: ''
        },
        watch: {
            'obj.words'(newV, oldV) {
                clearTimeout(this.timer);
                this.timer = setTimeout(async () => {
                    let res = await axios({
                        url: 'https://applet-base-api-t.itheima.net/api/translate',
                        params: {
                            words: newV
                        }
                    });
                    this.result = res.data.data
                }, 3000)
            }
        }
    })
</script>
</body>
</html>